トリガーイベントにrepository_dispatchを指定すると、GitHub API からイベントのディスパッチをした時に実行されるワークフローを作れます。
このトリガーを有効にするにはワークフロー.ymlファイルに次を追加するだけです。
on: repository_dispatchイベント送信
イベントの送信は例えばcurlで以下のように行なえます。
curl -X POST \
--header 'accept: application/vnd.github.v3+json' \
--data '{"event_type": "foo"}' \
https://api.github.com/repos///dispatches <owner>/<repo>はワークフローを置いている GitHub リポジトリによって変わります。
もしリポジトリがプライベートであれば、repo権限を持ったアクセストークンも送る必要があります。
--header 'authorization: bearer ' 値も送ってワークフローで使う
データのclient_payloadに好きなオブジェクトデータを入れて送るとワークフローでその値が使えます。例えば以下で送ると、
curl -X POST \
--header 'accept: application/vnd.github.v3+json' \
--data '{"event_type": "foo", "client_data": {"value": "value"}}' \
https://api.github.com/repos///dispatches ワークフローではgithubコンテキストを通してそれを取得できます。
jobs:
build:
steps:
- name: client_payload
run: echo ${{ github.event.client_payload.value }}
# value ちなみにevent_typeはgithub.event.actionで取得できます。